package xyz.mumuwei.youthcourseserver.pojo;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * @author mumuwei
 * @since 2022-02-19
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Course implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 课程名
     */
    @NotBlank(message = "课程名不能为空！")
    private String name;

    /**
     * 课程价格
     */
    @NotNull(message = "售价不能为空")
    private BigDecimal price;

    /**
     * 课程适合年龄段
     */
    @NotBlank(message = "适合年龄段不能为空")
    private String age;

    /**
     * 课程分类
     */
    @NotBlank(message = "课程分类不能为空")
    private String classify;

    /**
     * 开课时间
     */
    private String startTime;

    /**
     * 结课时间
     */
    private String finishTime;

    /**
     * 课时数
     */
    private Integer lessonDuration;

    /**
     * 课程容量
     */
    @NotNull(message = "课程容量不能为空")
    private Integer capacity;

    /**
     * 课程余量
     */
    private Integer surplus;

    /**
     * 描述图列表
     */
    private String remark;

    /**
     * 课程预约体验时间
     */
    private String experienceTime;

    /**
     * 状态: 0：未开课,  1：授课中, 2: 结课
     */
    private Integer state;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private String createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateTime;

    /**
     * 逻辑删除: 0：正常,  1：删除
     */
    @TableLogic
    private Integer isDelete;

    /**
     * 上课时间列表
     */
    @TableField(exist = false)
    private List<CourseTime> classTime = new ArrayList<>();

    /**
     * 轮播图列表
     */
    @TableField(exist = false)
    private List<FileResources> rotationList = new ArrayList<>();

    /**
     * 教师列表
     */
    @TableField(exist = false)
    private List<UserInfo> teacherList = new ArrayList<>();

}
